Modern applications frequently involve pulling in information and functionality from multiple other sources, including other applications. Bringing together multiple independent applications in this manner often creates a disjointed, clumsy experience that feels more like interacting with many separate interfaces, rather than one seamless, integrated interface. As software applications become more interrelated, this transition between application contexts becomes more important, as does making it as smooth and transparent as possible.
For example, a web page presented by a web browser may call one or more components. As such, the web page may be an external application and the components may be internal applications. Such components may include iframes, widgets, and so on. Such internal applications may call one or more players, such as one or more video players. Thus, multiple independent applications may be simultaneously operating that may create a disjointed, clumsy experience that feels more like interacting with many separate interfaces, rather than one seamless, integrated interface.